home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.2)
-
-
- class Sprite:
-
- def __init__(self, group = ()):
- self._Sprite__g = { }
- self.add(group)
-
-
- def add(self, group):
- has = self._Sprite__g.has_key
- if hasattr(group, '_spritegroup'):
- if not has(group):
- group.add_internal(self)
- self._Sprite__g[group] = 0
-
- else:
- groups = group
- for group in groups:
- if not has(group):
- group.add_internal(self)
- self._Sprite__g[group] = 0
-
-
-
-
- def remove(self, group):
- has = self._Sprite__g.has_key
- if hasattr(group, '_spritegroup'):
- if has(group):
- group.remove_internal(self)
- del self._Sprite__g[group]
-
- else:
- for g in group:
- if has(g):
- g.remove_internal(self)
- del self._Sprite__g[group]
-
-
-
-
- def add_internal(self, group):
- self._Sprite__g[group] = 0
-
-
- def remove_internal(self, group):
- del self._Sprite__g[group]
-
-
- def update(self, *args):
- pass
-
-
- def kill(self):
- for c in self._Sprite__g.keys():
- c.remove_internal(self)
-
- self._Sprite__g.clear()
-
-
- def groups(self):
- return self._Sprite__g.keys()
-
-
- def alive(self):
- return len(self._Sprite__g)
-
-
- def __repr__(self):
- return '<%s sprite(in %d groups)>' % (self.__class__.__name__, len(self._Sprite__g))
-
-
-
- class Group:
- _spritegroup = 1
-
- def __init__(self, sprite = ()):
- self.spritedict = { }
- if sprite:
- self.add(sprite)
-
-
-
- def copy(self):
- return self.__class__(self.spritedict.keys())
-
-
- def sprites(self):
- return self.spritedict.keys()
-
-
- def add(self, sprite):
- has = self.spritedict.has_key
- if hasattr(sprite, '_spritegroup'):
- for sprite in sprite.sprites():
- if not has(sprite):
- self.spritedict[sprite] = 0
- sprite.add_internal(self)
-
-
- else:
-
- try:
- len(sprite)
- except (TypeError, AttributeError):
- if not has(sprite):
- self.spritedict[sprite] = 0
- sprite.add_internal(self)
-
- except:
- not has(sprite)
-
- for sprite in sprite:
- if not has(sprite):
- self.spritedict[sprite] = 0
- sprite.add_internal(self)
-
-
-
-
- def remove(self, sprite):
- has = self.spritedict.has_key
- if hasattr(sprite, '_spritegroup'):
- for sprite in sprite.sprites():
- if has(sprite):
- self.remove_internal(sprite)
- sprite.remove_internal(self)
-
-
- else:
-
- try:
- len(sprite)
- except (TypeError, AttributeError):
- if has(sprite):
- self.remove_internal(sprite)
- sprite.remove_internal(self)
-
- except:
- has(sprite)
-
- for sprite in sprite:
- if has(sprite):
- self.remove_internal(sprite)
- sprite.remove_internal(self)
-
-
-
-
- def add_internal(self, sprite):
- self.spritedict[sprite] = 0
-
-
- def remove_internal(self, sprite):
- del self.spritedict[sprite]
-
-
- def has(self, sprite):
- has = self.spritedict.has_key
- if hasattr(sprite, '_spritegroup'):
- for sprite in sprite.sprites():
- if not has(sprite):
- return 0
-
-
- else:
-
- try:
- len(sprite)
- except (TypeError, AttributeError):
- return has(sprite)
-
- for sprite in sprite:
- if not has(sprite):
- return 0
-
-
- return 1
- if hasattr(sprite, '_spritegroup'):
- return sprite in has(sprite)
-
- sprites = sprite
- for sprite in sprites:
- if not has(sprite):
- return 0
-
-
- return 1
-
-
- def empty(self):
- for s in self.spritedict.keys():
- self.remove_internal(s)
- s.remove_internal(self)
-
- self.spritedict.clear()
-
-
- def update(self, *args):
- if args:
- a = apply
- for s in self.spritedict.keys():
- a(s.update, args)
-
- else:
- for s in self.spritedict.keys():
- s.update()
-
-
-
- def __nonzero__(self):
- return len(self.spritedict)
-
-
- def __len__(self):
- return len(self.spritedict)
-
-
- def __repr__(self):
- return '<%s(%d sprites)>' % (self.__class__.__name__, len(self))
-
-
-
- class GroupSingle:
- _spritegroup = 1
-
- def __init__(self, sprite = ()):
- self.sprite = 0
- self.add(sprite)
-
-
- def copy(self):
- if self.sprite is not 0:
- return GroupSingle(self.sprite)
-
- return GroupSingle()
-
-
- def sprites(self):
- if self.sprite is not 0:
- return [
- self.sprite]
-
- return []
-
-
- def add(self, sprite):
- if hasattr(sprite, '_spritegroup'):
- for sprite in sprite.sprites():
- pass
-
- else:
-
- try:
- if not len(sprite):
- return None
-
- sprite = sprite[-1]
- except (TypeError, AttributeError):
- pass
-
- if sprite is not self.sprite:
- self.add_internal(sprite)
- sprite.add_internal(self)
-
-
-
- def remove(self, sprite):
- if hasattr(sprite, '_spritegroup'):
- for sprite in sprite.sprites():
- if self.sprite is sprite:
- self.sprite = 0
- sprite.remove_internal(self)
- break
-
-
- else:
-
- try:
- if not len(sprite):
- return None
- except (TypeError, AttributeError):
- if self.sprite is sprite:
- self.sprite = 0
- sprite.remove_internal(self)
-
- except:
- self.sprite is sprite
-
- for sprite in sprite:
- if self.sprite is sprite:
- self.sprite = 0
- sprite.remove_internal(self)
- break
-
-
-
-
- def add_internal(self, sprite):
- if self.sprite is not 0:
- self.sprite.remove_internal(self)
-
- self.sprite = sprite
-
-
- def remove_internal(self, sprite):
- self.sprite = 0
-
-
- def has(self, sprite):
- return self.sprite is sprite
-
-
- def empty(self):
- if self.sprite is not 0:
- self.sprite.remove_internal(self)
- self.sprite = 0
-
-
-
- def update(self, *args):
- if self.sprite:
- apply(self.sprite.update(args))
-
-
-
- def __nonzero__(self):
- return self.sprite is not 0
-
-
- def __len__(self):
- return self.sprite is not 0
-
-
- def __repr__(self):
- return '<%s(%d sprites)>' % (self.__class__.__name__, len(self))
-
-
-
- class RenderPlain(Group):
-
- def draw(self, surface):
- spritedict = self.spritedict
- surface_blit = surface.blit
- for s in spritedict.keys():
- surface_blit(s.image, s.rect)
-
-
-
-
- class RenderClear(Group):
-
- def __init__(self, sprite = ()):
- Group.__init__(self, sprite)
- self.lostsprites = []
-
-
- def remove_internal(self, sprite):
- r = self.spritedict[sprite]
- if r is not 0:
- self.lostsprites.append(r)
-
- del self.spritedict[sprite]
-
-
- def draw(self, surface):
- spritedict = self.spritedict
- surface_blit = surface.blit
- for s in spritedict.keys():
- spritedict[s] = surface_blit(s.image, s.rect)
-
- self.lostsprites = []
-
-
- def clear(self, surface, bgd):
- if callable(bgd):
- for r in self.lostsprites:
- bgd(surface, r)
-
- for r in self.spritedict.values():
- if r is not 0:
- bgd(surface, r)
-
-
- else:
- surface_blit = surface.blit
- for r in self.lostsprites:
- surface_blit(bgd, r, r)
-
- for r in self.spritedict.values():
- if r is not 0:
- surface_blit(bgd, r, r)
-
-
-
-
-
- class RenderUpdates(RenderClear):
-
- def draw(self, surface):
- spritedict = self.spritedict
- surface_blit = surface.blit
- dirty = self.lostsprites
- self.lostsprites = []
- dirty_append = dirty.append
- for s, r in spritedict.items():
- newrect = surface_blit(s.image, s.rect)
- if r is 0:
- dirty_append(newrect)
- elif newrect.colliderect(r):
- dirty_append(newrect.union(r))
- else:
- dirty_append(newrect)
- dirty_append(r)
- spritedict[s] = newrect
-
- return dirty
-
-
-
- def spritecollide(sprite, group, dokill):
- crashed = []
- spritecollide = sprite.rect.colliderect
- if dokill:
- for s in group.sprites():
- if spritecollide(s.rect):
- s.kill()
- crashed.append(s)
-
-
- else:
- for s in group.sprites():
- if spritecollide(s.rect):
- crashed.append(s)
-
-
- return crashed
-
-
- def groupcollide(groupa, groupb, dokilla, dokillb):
- crashed = { }
- SC = spritecollide
- if dokilla:
- for s in groupa.sprites():
- c = SC(s, groupb, dokillb)
- if c:
- crashed[s] = c
- s.kill()
-
-
- else:
- for s in groupa.sprites():
- c = SC(s, groupb, dokillb)
- if c:
- crashed[s] = c
-
-
- return crashed
-
-
- def spritecollideany(sprite, group):
- spritecollide = sprite.rect.colliderect
- for s in group.sprites():
- if spritecollide(s.rect):
- return s
-
-
- return None
-
-